Computer systems of various kinds have been around and used in commerce for about 40 years. Usually a system designer has an undergraduate college degree, typically in computer science or in electrical engineering. This training includes general instruction in the principles of computers, in physics, in the calculus and in boolean algebra--that branch of algebra dealing with logic design. In addition there is some training given usually in the function of standard circuits which have been used in the past, such as what is a gate, what is an adder and what is a multiplier. Electrical engineers are exposed to drafting and have additional training in areas of specialization, whether it be power, board design, or some other work. At the end of their training they are expected to be able to design some simple board level circuits with available logic pads and to measure current and voltage of components at different points. They usually learn BASIC and PASCAL as computer languages.
Computer Science majors generally also have training in additional languages used in commerce, COBOL, FORTRAN and C being those normally learned. Usually normal engineers and students do not have access to the most advanced equipment and systems. Usually they don't have access to or experience with the equipment and facilities which may be available to others working in a narrow field of specialization. Students generally have access to DOS as an operating system applicable to IBM's PC and some of its older advances which have been copied by other companies which have made "clones" of IBM's XT and AT. These computer people generally also have access to other systems which have been developed by IBM, such as systems based on the 360/370 operating systems. Many student computer laboratories workstations use a reduced instruction set computer architecture developed by IBM in the last decade, a so called RISC system exemplified by the SUN Microsystems workstations and IBM's RISC/6000 machines. These machines use the UNIX operating system and are generally made available to students majoring in the software area of computer science. The machines that the students use in their education are often stand alone systems, but they usually have access in a computer laboratory to a mainframe such as the IBM mainframes based on the SYSTEM/370 architectures which have been used for the last two decades, or other machines of similar vintage such as one sold by Digital Equipment Corporation, a VAX.
All commercial systems are continually improved. The inventions made by those working in the field are often introduced as changes to machines, often resulting in further improvements which are made as a result of either an appreciation by someone that the new improvements will help them solve frustrating situations that they have lived with in the past or since the new improvements lead to new frustrations because experience leads to a new frustration or felt need. These frustrations and felt needs lead to new inventions as the technology develops. Frustrations cause wishes. Wishes may be satisfied by by purchase of additional items selected from an assembled group of possible sources which state that the items are applicable to a specific need (building blocks or stated solutions) if these building blocks are available. Otherwise, they lead to the development of new improvements and features to fulfill the wish list.
This quest for fulfillment may lead those involved to search out experts in an area of specialization in order to solicit their views and to examine the printed work of others which are available to those wishing to fulfill their own needs or to satisfy the wishes of others. Such wishes may arise from the need to satisfy a particular immediate problem not faced before by an individual who has a task to accomplish or as a desire to provide for many people a means to allow them to have a better life by relieving some continual drudgery that has been faced for many years. Examples of wishes include a wish to move a load of materials down a river over a rapids without having to unload the material from a carrier; another wish might be a desire to allow communication over distances greater than the human voice shouting range. Other wishes may be for a way to clean a carpet or garment or to solve a mathematical problem more easily and quickly. Sometimes the wish arises because an impediment to a task has been placed in the path or stream required to be traversed.
Sometimes the wish is satisfied by a discovery that something which has existed may satisfy the wish. Sometimes the wish is satisfied by long and painstaking experimentation with known elements. Sometimes the wish may be satisfied by a recognition that something present needs to be eliminated to make a job easier, or something present is surplus and not needed to solve a need even though it may remain available for other uses. Sometimes the wish is satisfied by the recognition that a previously unrecognized symmetry or relationship among elements exists which when combined in the newly recognized manner will satisfy the wish. This combination or newly recognized manner of combining things may result in addition in a new synergy, something that will be useful in other areas, something that may be recognized, in the colloquial as "neat". As the satisfaction of needs of one person, if not communicated, passes with time, we all appreciate the efforts of authors and inventors who have made their work known so that we ourselves can draw upon their toils and can promote the useful arts and other areas of human enjoyment. This body of information and work has become known where applicable as the "technology" which we now enjoy.
Usually the first two or so years of a system designer's career are devoted to work related to the need to satisfy the wishes of others. Usually the position is one of employment with others. Generally a systems designer is assigned some pad of a system, usually a task of implementing a design of others. This work is often tedious and time consuming. Just the analysis of timing of a circuit may take a very substantial amount of time in order to make different building blocks of the design interact as intended by the designer. The creation of a report of a particular kind based upon a group of collected data may take a programmer many hours with some of the "technology" of today.
Some prototypes make use of building blocks already created by teams of experts to enable a solution to some generic problems which have been recognized as technical areas requiring specialized solutions for particular purposes, such as the electronic building block of TTL (transistor-transistor logic) logic, which have prototype advantage in that they are self clocking. Some areas of "technology" have been more widely adopted than others. An example of a recently widely adopted technology is the RISC architecture and the paradigms used in this area. Part of the reason for this is that only a relatively small group of research and development personnel of great expertise may grasp a solution which leads to the satisfaction of a wish and an advancement in the state of the art, when each one of say twenty five developers contributes his or her own inventions to the whole development.
These improvements may be useful for others and may become new paradigms in the art in a particular area of development. New processes speed processing and provide building blocks for future progress.
Our work is useful in improving the speed of operations needed by others such as the United States Government for improving production systems. These systems in the past have used CLIPS and the RETE algorithm (FIG. 4 herein).
Our work may be used for performing inferencing for forward chained rule-based expert systems. A forward chained expert system, see references 2 or 4, uses a set of rules, the rule set, and a set of facts, working memory (WM), to deduce new facts where each new fact is called a working memory element (WME).
Conventional OPS-like forward chained inferencing systems (See Reference 2) typically use the RETE match algorithm shown in FIG. 4 and described in Reference 3) for the efficient matching of rule LHS productions against WMEs. This method is an eager evaluation method that is not optimized for use when a high speed pattern matcher is available. Regarding expert system inferencing, eager evaluation means that all the possible processing consequences of adding a new WME are taken to their limit of evaluation.
The RETE algorithm takes the input rule patterns and builds a tree structure of test nodes, also called alpha tests, and join nodes, also called beta tests. See the example of prior art in the FIG. 4 which shows an expert system rule written in the CLIPS language and a potential RETE network for that rule's LHS patterns.
Test nodes check a portion of the WME against a criteria and pass the entering WME to the next node on the tree path only if the criteria is satisfied. Test nodes have one in path and one out path. They act as filters.
The preferred embodiments of our inventions disclosed provide new paradigms which will be useful to others in the field of the invention. In addition they are useful in connection with the inventions disclosed in the related applications and may be combined with the inventions disclosed there to promote further progress in the art.
As background for those reviewing our work, it will be recognized by some that there are commercially available CAM devices. CAM devices were developed first over twenty years ago. LINDA has been used widely by experts in computer field for the better part of the last decade. Apparently, a group of very expert researchers have used LINDA in connection with a machine, a MIMD parallel processing system, in which LINDA processes communicate through a globally shared associative memory mechanism which they consider as Tuple Space. In the description of that system, it was stated that the unit of communication was a tuple, a self-contained object containing an arbitrary number of data elements. Processes communicated by adding, reading and withdrawing tuples from tuple space though the operations "out(), rd(), and in()" respectively. The operators which we describe as OUT, IN and READ, like the "out(), rd(), and in()" available with commercial LINDA compilers may be considered as having, in the general context, similar operator definitions. The Architecture which was described in the earlier work referenced (1) was not employed for a CAM system where each co-processor had one or more CAMs to communicate with as our development has. It utilized a general global memory to which tuple space was assigned, and a co-processor CPU was employed to switch in and out of global memories and working buffer memory from requests passing on a bus, as illustrated by FIG. 4 of the report of their work as referenced herein (1).